﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Smart
{
    public enum TahsilatTipi : byte
    {
        Nakit = 0,
        Cek = 2,
        Senet = 4,
        KrediKarti = 1,
        Havale = 3
    }
    public enum EvrakTipleri : byte
    {

        ToptanAlisIrsaliyesi,
        PerakendeAlisIrsaliyesi,

        ToptanAlisIadeIrsaliyesi,
        PerakendeAlisIadeIrsaliyesi,

        ToptanSatisIrsaliyesi,
        PerakendeSatisIrsaliyesi,

        ToptanSatisIadeIrsaliyesi,
        PerakendeSatisIadeIrsaliyesi,

        GelenDepoSevk,
        GidenDepoSevk,

        AlinanSiparis,
        VerilenSiparis,
        SubeSiparis,

        ToptanSatisFaturasi,
        PerakendeSatisFaturasi,

        ToptanSatisIadeFaturasi,
        PerakendeSatisIadeFaturasi,

        Tahsilat
    }

    public class Mikro
    {
        Servis service;
        string serverName = Program.Session[Settings.Sunucu].ToString();
        string databaseName = Program.Session[Settings.Veritabani].ToString();
        string userName = Program.Session[Settings.VtKullaniciAdi].ToString();
        string password = Program.Session[Settings.VtSifre].ToString();

        public Mikro()
        {
            service = new Servis();
        }

        #region Servis Veri Aktarımı
        public virtual string[] BarkodList(DateTime sonGuncellemeTarihi)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'SELECT bar.bar_RECno,stk.sto_RECno,bar.bar_stokkodu,bar.bar_kodu,bar.bar_icerigi,bar.bar_barkodtipi,bar.bar_birimpntr FROM BARKOD_TANIMLARI as bar WITH (NOLOCK) INNER JOIN STOKLAR as stk WITH (NOLOCK) ON bar.bar_stokkodu = stk.sto_kod WHERE     (bar_lastup_date >= ''{0}'')'", sonGuncellemeTarihi.ToFullSqlString()));
        }
        public virtual string[] StokList(DateTime sonGuncellemeTarihi)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'SELECT  sto_RECno, sto_kod, sto_isim,dbo.fn_StokFiyatDovizCinsi(sto_kod,1,0) as sto_doviz_cinsi, sto_birim1_ad, sto_birim1_katsayi, sto_birim2_ad, sto_birim2_katsayi, sto_birim3_ad, sto_birim3_katsayi,sto_birim4_ad, sto_birim4_katsayi,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 1, 0) AS fiyat1,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 2, 0) AS fiyat2,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 3, 0) AS fiyat3,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 4, 0) AS fiyat4,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 5, 0) AS fiyat5,dbo.fn_StokIskontoKodu(STOKLAR.sto_kod, 1, 0) AS fiyat1iskonto,dbo.fn_StokIskontoKodu(STOKLAR.sto_kod, 2, 0) AS fiyat2iskonto,dbo.fn_StokIskontoKodu(STOKLAR.sto_kod, 3, 0) AS fiyat3iskonto,dbo.fn_StokIskontoKodu(STOKLAR.sto_kod, 4, 0) AS fiyat4iskonto,dbo.fn_StokIskontoKodu(STOKLAR.sto_kod, 5, 0) AS fiyat5iskonto,STOKLAR.sto_perakende_vergi,dbo.fn_VergiYuzde(STOKLAR.sto_perakende_vergi) as oran FROM STOKLAR WITH (NOLOCK) WHERE (sto_lastup_date >= ''{0}'')'", sonGuncellemeTarihi.ToFullSqlString()));
        }
        public virtual string[] DepoList()
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", "exec sp_executesql N'SELECT     dep_RECno, dep_no, dep_adi FROM         DEPOLAR'");
        }
        public virtual string[] SrmList()
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", "exec sp_executesql N'SELECT som_RECno, som_kod, som_isim FROM SORUMLULUK_MERKEZLERI'");
        }
        public virtual string[] KullaniciList()
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", "exec sp_executesql N'SELECT     ID, KODU, ADI, SIFRE FROM         TERMINAL_KULLANICILAR'");
        }
        public virtual string[] EnvanterList(int depoNo, DateTime lastupdateDate)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'SELECT STOKLAR.sto_RECno,DEPOLAR.dep_RECno,CAST(dbo.fn_DepodakiMiktar(STOKLAR.sto_kod, DEPOLAR.dep_no, ''2900-01-01'') AS decimal(16, 2)) AS miktar FROM STOKLAR CROSS JOIN DEPOLAR WHERE (STOKLAR.sto_kod in (SELECT sth_stok_kod FROM STOK_HAREKETLERI WHERE (sth_lastup_date >= ''{1}'') GROUP BY sth_stok_kod))'", depoNo, lastupdateDate.ToSqlString()));
        }
        public virtual string[] MenuList(int kullaniciID)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'SELECT     KOD, KULLANABILIR, ACIKLAMA, SIFRELI FROM TERMINAL_MENU WHERE     (KULLANICI = {0})'", kullaniciID));
        }
        public virtual string[] CariBakiyeList(DateTime sonGuncellemeTarihi, string[] srmMerkez)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("exec sp_executesql N'SELECT (SELECT cari_RECno  FROM         CARI_HESAPLAR WHERE     (cari_kod = ch.cha_kod)) as ID,");
            sb.Append(" dbo.fn_CariHesapAnaDovizBakiye(N'''', 0, ch.cha_kod, N'''', N'''', NULL, NULL, NULL, 0) AS TOPLAM_BAKIYE ");
            foreach (string srm in srmMerkez)
            {
                if (!string.IsNullOrEmpty(srm))
                {
                    sb.AppendFormat(" ,dbo.fn_CariHesapAnaDovizBakiye(N'''', 0, ch.cha_kod, N''{0}'', N'''', NULL, NULL, NULL, 0) AS [{0}]", srm);
                }
                else
                {
                    sb.AppendFormat(" , cast(0 as decimal) as [{0}] ", srm);
                }
            }
            sb.AppendFormat(" FROM CARI_HESAP_HAREKETLERI as ch WHERE     (ch.cha_lastup_date >= ''{0}'') AND (ch.cha_kod like ''120.%'') GROUP BY ch.cha_kod'", sonGuncellemeTarihi.ToFullSqlString());
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", sb.ToString());
        }
        public virtual string[] CariList(DateTime sonGuncellemeTarihi)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("exec sp_executesql N'SELECT     cari_RECno, cari_kod, cari_unvan1, cari_unvan2, cari_vdaire_adi, cari_vdaire_no, cari_temsilci_kodu, cari_satis_isk_kod, cari_satis_fk, cari_POS_ongIskOran,cari_odemeplan_no ");
            sb.AppendFormat(" FROM         CARI_HESAPLAR WHERE     (cari_lastup_date >= ''{0}'')'", sonGuncellemeTarihi.ToFullSqlString());
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", sb.ToString());
        }
        public virtual string[] CariAdresList(DateTime sonGuncellemeTarihi)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'SELECT     adr.adr_RECno, cr.cari_RECno, adr.adr_adres_no, adr.adr_cadde + '' '' + adr.adr_sokak AS adres, adr.adr_il, adr.adr_ilce, adr.adr_temsilci_kodu,adr.adr_ziyaretperyodu, adr.adr_ziyarethaftasi, adr.adr_ozel_not, cast(adr.adr_ziygunu2_1 as int) , cast(adr.adr_ziygunu2_2 as int), cast(adr.adr_ziygunu2_3 as int) , cast(adr.adr_ziygunu2_4 as int),cast(adr.adr_ziygunu2_5 as int), cast(adr.adr_ziygunu2_6 as int), cast(adr.adr_ziygunu2_7 as int),adr.adr_tel_no1,adr.adr_tel_no2 FROM CARI_HESAP_ADRESLERI AS adr INNER JOIN CARI_HESAPLAR AS cr ON adr.adr_cari_kod = cr.cari_kod where  (adr_lastup_date >= ''{0}'')'", sonGuncellemeTarihi.ToFullSqlString()));
        }
        public virtual string[] IskontoMatris(DateTime sonGuncellemeTarihi)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'SELECT     isk_stok_kod, isk_cari_kod, isk_uygulama_odeme_plani, isk_isk1_yuzde, isk_isk2_yuzde, isk_isk3_yuzde, isk_isk4_yuzde, isk_isk5_yuzde, isk_isk6_yuzde FROM         STOK_CARI_ISKONTO_TANIMLARI WHERE     (isk_lastup_date >= ''{0}'')'", sonGuncellemeTarihi.ToFullSqlString()));
        }
        public bool EvrakEkle(string[] header, string[] details)
        {
            return service.EvrakEkle(header, details, serverName, databaseName, userName, password);
        }
        public bool TahsilatEkle(string[] Lines)
        {
            return service.TahsilatEkle(Lines, serverName, databaseName, userName, password);
        }
        public virtual string[] DovizKurlari(DateTime tarih)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" SELECT   cast(''0'' as int) as DovizNo,dbo.fn_DovizSembolu(0) as sembol,dbo.fn_KurBul(''2900-01-01'',0,1) as kur ");
            sb.Append(" union all ");
            sb.Append(" SELECT   cast(''1'' as int) as DovizNo,dbo.fn_DovizSembolu(1) as sembol,dbo.fn_KurBul(''2900-01-01'',1,1) as kur ");
            sb.Append(" union all ");
            sb.Append(" SELECT   cast(''2'' as int) as DovizNo,dbo.fn_DovizSembolu(2) as sembol,dbo.fn_KurBul(''2900-01-01'',2,1) as kur ");
            sb.Append(" union all ");
            sb.Append(" SELECT   cast(''3'' as int) as DovizNo,dbo.fn_DovizSembolu(3) as sembol,dbo.fn_KurBul(''2900-01-01'',3,1) as kur ");
            sb.Append(" union all ");
            sb.Append(" SELECT   cast(''4'' as int) as DovizNo,dbo.fn_DovizSembolu(4) as sembol,dbo.fn_KurBul(''2900-01-01'',4,1) as kur ");

            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("exec sp_executesql N'{0}'", sb.ToString()));
        }
        public virtual string[] getServiceTime()
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", "select CAST(YEAR(GETDATE()) AS VARCHAR(4)) + '-'  +  CAST(MONTH(GETDATE()) AS VARCHAR(2))  + '-'  +  CAST(DAY(GETDATE()) AS VARCHAR(2)) ");
        }
        public virtual string[] AyarYukle(int kullaniciId)
        {
            return service.ExecuteScalar2(serverName, databaseName, userName, password, "Æ", string.Format("SELECT     PARAMETRE, DEGER FROM         TERMINAL_KULLANICI_HAKLARI WHERE     (KULLANICI_ID = {0})", kullaniciId));
        }
        #endregion

        #region Sql Client İşlemleri
        public virtual byte[] EvrakCins(EvrakTipleri cins)
        {
            byte[] sonuc = new byte[4];
            switch (cins)
            {
                case EvrakTipleri.ToptanAlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.ToptanSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.AlinanSiparis:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.VerilenSiparis:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.GidenDepoSevk:
                case EvrakTipleri.GelenDepoSevk:
                    sonuc[0] = 2;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 2;
                    break;
                case EvrakTipleri.ToptanSatisFaturasi:
                    break;
                case EvrakTipleri.Tahsilat:
                    break;
                case EvrakTipleri.ToptanSatisIadeFaturasi:
                    break;
                default:
                    break;
            }
            return sonuc;
        }
        public virtual void SayimSil(DateTime tarih, int evrakNo, int depoNo, SqlTransaction trn)
        {
            DbSqlServer.Get.Exec(string.Format("DELETE FROM SAYIM_SONUCLARI WHERE     (sym_tarihi = '{0}') AND (sym_depono = {1}) AND (sym_evrakno = {2})", tarih.ToSqlString(), depoNo, evrakNo), trn);
        }
        public virtual bool SayimKaydet(DataTable dt, bool evrakSil)
        {
            if (dt.Rows.Count == 0)
                return false;

            StringBuilder sb = new StringBuilder();
            sb.Append("if exists(select sym_RECno from SAYIM_SONUCLARI where sym_tarihi= @tarih and sym_depono =@depo and sym_evrakno=@evrakno and sym_satirno=@satir)");
            sb.Append("update SAYIM_SONUCLARI set sym_SpecRECno=0,sym_iptal=0,sym_fileid=28,sym_hidden=0,sym_kilitli=0,sym_degisti=0,sym_checksum=0,sym_lastup_user=1,sym_lastup_date=@crdate,sym_special1='',sym_special2='',sym_special3='',sym_Stokkodu=@stokkodu,sym_reyonkodu='0',sym_koridorkodu='0',sym_rafkodu='0',sym_miktar1=@miktar,sym_miktar2=0,sym_miktar3=0,sym_miktar4=0,sym_miktar5=0,sym_birim_pntr=1,sym_barkod=@barkod,sym_renkno=0,sym_bedenno=0,sym_lot_no=0,sym_serino='' where sym_tarihi= @tarih and sym_depono =@depo and sym_evrakno=@evrakno and sym_satirno=@satir else ");
            sb.Append("insert into SAYIM_SONUCLARI (sym_RECid_DBCno,sym_RECid_RECno,sym_SpecRECno,sym_iptal,sym_fileid,sym_hidden,sym_kilitli,sym_degisti,sym_checksum,sym_create_user,sym_create_date,sym_lastup_user,sym_lastup_date,sym_special1,sym_special2,sym_special3,sym_tarihi,sym_depono,sym_evrakno,sym_satirno,sym_Stokkodu,sym_reyonkodu,sym_koridorkodu,sym_rafkodu,sym_miktar1,sym_miktar2,sym_miktar3,sym_miktar4,sym_miktar5,sym_birim_pntr,sym_barkod,sym_renkno,sym_bedenno,sym_parti_kodu,sym_lot_no,sym_serino) values (0,-1,0,0,28,0,0,0,0,1,@crdate,1,@crdate,'','','',@tarih,@depo,@evrakno,@satir,@stokkodu,'0','0','0',@miktar,0,0,0,0,1,@barkod,0,0,'',0,'') ");
            sb.Append(";update SAYIM_SONUCLARI set sym_RECid_RECno=sym_RECno where sym_RECid_RECno=-1");

            SqlParameter prm1 = new SqlParameter("@tarih", SqlDbType.DateTime);
            SqlParameter prm2 = new SqlParameter("@depo", SqlDbType.Int);
            SqlParameter prm3 = new SqlParameter("@evrakno", SqlDbType.Int);
            SqlParameter prm4 = new SqlParameter("@satir", SqlDbType.Int);
            SqlParameter prm5 = new SqlParameter("@crdate", SqlDbType.DateTime);
            SqlParameter prm6 = new SqlParameter("@stokkodu", SqlDbType.VarChar);
            SqlParameter prm7 = new SqlParameter("@miktar", SqlDbType.Float);
            SqlParameter prm8 = new SqlParameter("@barkod", SqlDbType.VarChar);

            SqlTransaction trn = DbSqlServer.Get.OpenTransaction();

            DateTime tarih;
            int depoNo;
            int evrakNo;

            if (evrakSil)
            {
                tarih = Convert.ToDateTime(dt.Rows[0]["tarih"]);
                evrakNo = Convert.ToInt32(dt.Rows[0]["evrak_no"]);
                depoNo = Convert.ToInt32(dt.Rows[0]["depo"]);
                SayimSil(tarih, evrakNo, depoNo, trn);
            }

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                tarih = Convert.ToDateTime(dt.Rows[i]["tarih"]);
                evrakNo = Convert.ToInt32(dt.Rows[i]["evrak_no"]);
                depoNo = Convert.ToInt32(dt.Rows[i]["depo"]);
                prm1.Value = tarih;
                prm2.Value = depoNo;
                prm3.Value = evrakNo;
                prm4.Value = SayimSatirNo(tarih, evrakNo, depoNo, trn);
                prm5.Value = DateTime.Now;
                prm6.Value = dt.Rows[i]["stokkod"].ToString();
                prm7.Value = Convert.ToDecimal(dt.Rows[i]["miktar"]);
                prm8.Value = dt.Rows[i]["barkod"].ToString();

                DbSqlServer.Get.Exec(sb.ToString(), trn, prm1, prm2, prm3, prm4, prm5, prm6, prm7, prm8);
            }

            try
            {
                trn.Commit();
                return true;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                if (trn != null)
                {
                    trn.Rollback();
                    trn.Connection.Close();
                }
                return false;
            }
        }
        public virtual int SayimSatirNo(DateTime tarih, int evrakNo, int depoNo, SqlTransaction trn)
        {
            return DbSqlServer.Get.ExecScalar<int>(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sym_satirno), 0) + 1 AS satirNo  FROM SAYIM_SONUCLARI WITH (NOLOCK) WHERE     (sym_tarihi = ''{0}'') AND (sym_depono = {1}) AND (sym_evrakno = {2})'", tarih.ToSqlString(), depoNo, evrakNo), trn);
        }
        public virtual int SayimEvrakNo(DateTime tarih, int depoNo, SqlTransaction trn)
        {
            return DbSqlServer.Get.ExecScalar<int>(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sym_evrakno), 0) + 1 AS evrakNo  FROM SAYIM_SONUCLARI WITH (NOLOCK) WHERE     (sym_tarihi = ''{0}'') AND (sym_depono = {1})'", tarih.ToSqlString(), depoNo), trn);
        }
        public virtual int MaxEvrakNo(EvrakTipleri tip, String seri)
        {
            byte[] dizi = this.EvrakCins(tip);
            int sira = 1;
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                switch (tip)
                {
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'')'", seri, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'')'", seri));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'')'", seri));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'')'", seri));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE  (sth_evraktip = {1}) AND (sth_evrakno_seri = ''{0}'')'", seri, dizi[3]));
                        break;
                }
                sira = q.ExecScaler<int>();
            }
            return sira;
        }
        public virtual int MaxSatirNo(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCins(tip);
            int satir = 0;
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sip_satirno),-1) + 1 as sira  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sip_satirno),-1) + 1 as sira  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(cha_satir_no),-1) + 1 as sira  FROM CARI_HESAP_HAREKETLERI WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sth_satirno), -1) + 1 as sira  FROM STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05)  WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sth_satirno), -1) + 1 as sira  FROM STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_evraktip = {2}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[3]));
                        break;
                }
                satir = q.ExecScaler<int>();
            }
            return satir;
        }
        public virtual bool EvrakVarmi(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCins(tip);
            int satir = 0;
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WHERE     (sth_tip = 2) AND (sth_cins = 6) AND (sth_normal_iade = 0) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WHERE     (sth_tip = {2}) AND (sth_cins = {3}) AND (sth_normal_iade = {4}) AND (sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]));
                        break;
                }
                satir = q.ExecScaler<int>();
            }
            return Convert.ToBoolean(satir);
        }
        public bool BagliMi(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCins(tip);
            int satir = 0;
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WHERE     (sth_tip = 2) AND (sth_cins = 6) AND (sth_normal_iade = 0) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WHERE     (sth_tip = {2}) AND (sth_cins = {3}) AND (sth_normal_iade = {4}) AND (sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1}) AND (sth_fat_recid_recno > 0)'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]));
                        break;
                }
                satir = q.ExecScaler<int>();
            }
            return Convert.ToBoolean(satir);
        }
        public void BarkodEkle(string barkod, string stokkod, int barkodid)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("if not exists(select bar_RECid_DBCno from BARKOD_TANIMLARI where bar_kodu=@barkod) INSERT INTO BARKOD_TANIMLARI ");
            sb.Append(" (bar_RECid_DBCno,bar_RECid_RECno,bar_SpecRECno,bar_iptal,bar_fileid,bar_hidden,bar_kilitli,bar_degisti,bar_checksum,bar_create_user,bar_create_date,bar_lastup_user,bar_lastup_date,bar_special1,bar_special2,bar_special3,bar_kodu,bar_stokkodu,bar_partikodu,bar_lotno,bar_serino_veya_bagkodu,bar_barkodtipi,bar_icerigi,bar_birimpntr,bar_master,bar_bedenpntr,bar_renkpntr,bar_baglantitipi,bar_harrecid_dbcno,bar_harrecid_recno)  ");
            sb.Append(" VALUES(0,-1,0,0,15,0,0,0,0,@usr,@tarih,@usr,@tarih,N'',N'',N'',@barkod,@stokkod,N'',0,N'',0,0,@birim,0,0,0,0,0,0);update BARKOD_TANIMLARI set bar_RECid_RECno=bar_RECno where bar_RECid_RECno=-1");
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                q.Add(sb.ToString());
                q.Add("@usr", SqlDbType.Int, Program.Session[Settings.MikroKullanici]);
                q.Add("@tarih", SqlDbType.DateTime, DateTime.Now);
                q.Add("@barkod", SqlDbType.VarChar, barkod);
                q.Add("@stokkod", SqlDbType.VarChar, stokkod);
                q.Add("@birim", SqlDbType.TinyInt, barkodid);
                q.Exec();
            }
        }
        public virtual string CariListSql(string filtre, bool cariKodaGore)
        {
            string aranan = "";
            if (string.IsNullOrEmpty(filtre))
                aranan = "%";
            else
                aranan = filtre.Replace('*', '%');

            if (cariKodaGore)
                return string.Format("SELECT     cari_RECno, cari_kod, cari_unvan1  FROM CARI_HESAPLAR WHERE (cari_kod LIKE '{0}%')", aranan);
            else
                return string.Format("SELECT     cari_RECno, cari_kod, cari_unvan1  FROM CARI_HESAPLAR WHERE (cari_unvan1 LIKE '{0}%')", aranan);
        }
        public virtual string CariBilgi(int cariId)
        {
            return string.Format("SELECT     CARI_HESAPLAR.cari_unvan1, CARI_HESAP_ADRESLERI.adr_cadde + ' ' + CARI_HESAP_ADRESLERI.adr_sokak + ' ' + CARI_HESAP_ADRESLERI.adr_il + ' ' + CARI_HESAP_ADRESLERI.adr_ilce + ' ' + CARI_HESAP_ADRESLERI.adr_tel_no1 + ' ' + CARI_HESAP_ADRESLERI.adr_tel_no2 ,CARI_HESAPLAR.cari_kod,CARI_HESAPLAR.cari_vdaire_adi, CARI_HESAPLAR.cari_vdaire_no FROM         CARI_HESAPLAR LEFT OUTER JOIN CARI_HESAP_ADRESLERI ON CARI_HESAPLAR.cari_kod = CARI_HESAP_ADRESLERI.adr_cari_kod WHERE     (CARI_HESAPLAR.cari_RECno = {0})", cariId);
        }
        public virtual string CariBilgi(string carikod)
        {
            return string.Format("SELECT     CARI_HESAPLAR.cari_RECno,CARI_HESAPLAR.cari_unvan1, CARI_HESAP_ADRESLERI.adr_cadde + ' ' + CARI_HESAP_ADRESLERI.adr_sokak + ' ' + CARI_HESAP_ADRESLERI.adr_il + ' ' + CARI_HESAP_ADRESLERI.adr_ilce + ' ' + CARI_HESAP_ADRESLERI.adr_tel_no1 + ' ' + CARI_HESAP_ADRESLERI.adr_tel_no2 ,CARI_HESAPLAR.cari_kod,CARI_HESAPLAR.cari_vdaire_adi, CARI_HESAPLAR.cari_vdaire_no FROM         CARI_HESAPLAR LEFT OUTER JOIN CARI_HESAP_ADRESLERI ON CARI_HESAPLAR.cari_kod = CARI_HESAP_ADRESLERI.adr_cari_kod WHERE     (CARI_HESAPLAR.cari_kod = '{0}')", carikod);
        }
        public virtual string StokListSql(string filtre, bool stokKodaGore)
        {
            string aranan = "";
            if (string.IsNullOrEmpty(filtre))
                aranan = "%";
            else
                aranan = filtre.Replace('*', '%');

            if (stokKodaGore)
                return string.Format("SELECT     BARKOD_TANIMLARI.bar_kodu, STOKLAR.sto_kod, STOKLAR.sto_isim FROM STOKLAR LEFT OUTER JOIN BARKOD_TANIMLARI ON STOKLAR.sto_kod = BARKOD_TANIMLARI.bar_stokkodu WHERE     (STOKLAR.sto_kod LIKE '{0}')", aranan);
            else
                return string.Format("SELECT     BARKOD_TANIMLARI.bar_kodu, STOKLAR.sto_kod, STOKLAR.sto_isim FROM STOKLAR LEFT OUTER JOIN BARKOD_TANIMLARI ON STOKLAR.sto_kod = BARKOD_TANIMLARI.bar_stokkodu WHERE     (STOKLAR.sto_isim LIKE '{0}')", aranan);
        }
        public virtual string StokBilgi(string filtre, bool stokKodaGore)
        {
            int depoNo = Program.Session.VarsayilanDepo();
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("SELECT  top 1 stk.sto_RECno,stk.sto_kod,stk.sto_isim, brk.bar_barkodtipi, brk.bar_icerigi,brk.bar_birimpntr, stk.sto_birim1_ad, stk.sto_birim1_katsayi, stk.sto_birim2_ad, stk.sto_birim2_katsayi,stk.sto_birim3_ad, stk.sto_birim3_katsayi, stk.sto_birim4_ad, stk.sto_birim4_katsayi,brk.bar_kodu,dbo.fn_StokSatisFiyati(stk.sto_kod,1,{0}) as fiyat,dbo.fn_DovizSembolu(dbo.fn_StokFiyatDovizCinsi(sto_kod,1,0)) as dvz,stk.sto_toptan_vergi ", depoNo);
            sb.Append(" FROM         STOKLAR AS stk LEFT OUTER JOIN BARKOD_TANIMLARI AS brk ON stk.sto_kod = brk.bar_stokkodu ");

            if (stokKodaGore)
            {
                sb.AppendFormat("WHERE     (stk.sto_kod = '{0}')", filtre);
            }
            else
            {
                sb.AppendFormat("WHERE     (brk.bar_kodu = '{0}')", filtre);
            }
            return sb.ToString();
        }
        public virtual string DepoListSql()
        {
            return "SELECT     dep_no, dep_adi FROM         DEPOLAR";
        }
        public virtual string SrmListSql()
        {
            return "SELECT     som_kod, som_isim FROM         SORUMLULUK_MERKEZLERI";
        }
        public virtual string StokHarEvrakList()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("SELECT     sth_tarih AS Tarih, sth_evrakno_seri AS [Evrak Seri], sth_evrakno_sira AS [Evrak Sıra], \r\n");
            sb.Append(" dbo.fn_CarininIsminiBul(0,STOK_HAREKETLERI.sth_cari_kodu) AS [Cari Ünvanı], \r\n");
            sb.Append(" dbo.fn_DepoIsmi(STOK_HAREKETLERI.sth_giris_depo_no) AS [Giris Depo], \r\n");
            sb.Append(" dbo.fn_DepoIsmi(STOK_HAREKETLERI.sth_cikis_depo_no) AS [Çıkış Depo], \r\n");
            sb.Append(" dbo.fn_StokHarEvrTip(sth_evraktip) AS [Evrak Cinsi], \r\n");
            sb.Append(" dbo.fn_StokHarCins(sth_cins) AS [Hareket Cinsi], \r\n");
            sb.Append(" dbo.fn_StokHarTip(sth_tip) AS [Hareket Tipi],\r\n");
            sb.Append(" dbo.fn_NormalIade(sth_normal_iade) AS [Normal/Iade], \r\n");
            sb.Append(" sth_tip,sth_cins,sth_normal_iade,sth_evraktip,sth_create_user \r\n");
            sb.Append(" FROM         STOK_HAREKETLERI \r\n");
            sb.Append(" WHERE (dbo.fn_CarininIsminiBul(0,STOK_HAREKETLERI.sth_cari_kodu) like @cari) \r\n");
            sb.Append(" AND (sth_tarih >= @baslangic AND sth_tarih <= @bitis) \r\n");
            sb.Append(" AND (sth_tip = @tip) AND (sth_cins = @cins) AND (sth_normal_iade = @ni) AND (sth_evraktip = @evrTip) \r\n");
            sb.Append(" GROUP BY sth_tarih,sth_evrakno_seri, sth_evrakno_sira, dbo.fn_CarininIsminiBul(0, sth_cari_kodu), dbo.fn_DepoIsmi(sth_giris_depo_no),dbo.fn_DepoIsmi(sth_cikis_depo_no), dbo.fn_StokHarEvrTip(sth_evraktip), dbo.fn_StokHarCins(sth_cins), dbo.fn_StokHarTip(sth_tip),dbo.fn_NormalIade(sth_normal_iade), sth_tip, sth_cins, sth_normal_iade, sth_evraktip,sth_create_user ");
            return sb.ToString();
        }
        public virtual string EvrakDetaySql(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCins(tip);
            string sql = "";
            switch (tip)
            {
                case EvrakTipleri.GidenDepoSevk:
                case EvrakTipleri.GelenDepoSevk:
                case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                case EvrakTipleri.PerakendeAlisIrsaliyesi:
                case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                case EvrakTipleri.PerakendeSatisIrsaliyesi:
                case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                case EvrakTipleri.ToptanAlisIrsaliyesi:
                case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                case EvrakTipleri.ToptanSatisIrsaliyesi:
                    sql = string.Format("exec sp_executesql N'SELECT shr.sth_tarih,shr.sth_belge_no,shr.sth_evrakno_seri,shr.sth_evrakno_sira,shr.sth_satirno,shr.sth_cari_kodu,shr.sth_sip_recid_dbcno,shr.sth_sip_recid_recno,shr.sth_cari_srm_merkezi,shr.sth_RECno,shr.sth_stok_kod,STOKLAR.sto_isim,shr.sth_miktar,shr.sth_tutar / shr.sth_miktar AS Fiyat,shr.sth_iskonto1,shr.sth_iskonto2,shr.sth_iskonto3,shr.sth_iskonto4,shr.sth_iskonto5,shr.sth_tutar,shr.sth_vergi_pntr,shr.sth_vergi,shr.sth_giris_depo_no,shr.sth_cikis_depo_no,(SELECT  TOP 1 bar_kodu  FROM BARKOD_TANIMLARI WHERE     (bar_stokkodu = shr.sth_stok_kod)) as barkod FROM STOK_HAREKETLERI as shr INNER JOIN STOKLAR ON shr.sth_stok_kod = STOKLAR.sto_kod  WHERE     (shr.sth_tip = {2}) AND (shr.sth_cins = {3}) AND (shr.sth_normal_iade = {4}) AND (shr.sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (shr.sth_evrakno_sira={1})'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]);
                    break;
            }
            return sql;
        }
        private void SiparisEkle(ref HareketBilgileri row, EvrakTipleri evrakCinsi)
        {
            byte[] cins = EvrakCins(evrakCinsi);
            StringBuilder sb = new StringBuilder();
            sb.Append("if exists(select sip_RECno from SIPARISLER where sip_tip=@sip_tip and sip_cins=@sip_cins and sip_evrakno_seri=@sip_evrakno_seri and sip_evrakno_sira=@sip_evrakno_sira and sip_satirno=@sip_satirno )");
            sb.Append("update SIPARISLER set sip_SpecRECno=0,sip_iptal=0,sip_fileid=21,sip_hidden=0,sip_kilitli=0,sip_degisti=0,sip_checksum=0,sip_create_user=@sip_create_user,sip_create_date=@sip_create_date,sip_lastup_user=@sip_lastup_user,sip_lastup_date=@sip_lastup_date,sip_special1='',sip_special2='',sip_special3='',sip_firmano=0,sip_subeno=0,sip_tarih=@sip_tarih,sip_teslim_tarih=@sip_teslim_tarih,sip_belgeno=@sip_belgeno,sip_belge_tarih=@sip_belge_tarih,sip_satici_kod=@sip_satici_kod,sip_musteri_kod=@sip_musteri_kod,sip_stok_kod=@sip_stok_kod,sip_b_fiyat=@sip_b_fiyat,sip_miktar=@sip_miktar,sip_birim_pntr=@sip_birim_pntr,sip_teslim_miktar=0,sip_tutar=@sip_tutar,sip_iskonto_1=@sip_iskonto_1,sip_iskonto_2=@sip_iskonto_2,sip_iskonto_3=@sip_iskonto_3,sip_iskonto_4=@sip_iskonto_4,sip_iskonto_5=@sip_iskonto_5,sip_iskonto_6=0,sip_masraf_1=0,sip_masraf_2=0,sip_masraf_3=0,sip_masraf_4=0,sip_vergi_pntr=@sip_vergi_pntr,sip_vergi=@sip_vergi,sip_masvergi_pntr=0,sip_masvergi=0,sip_opno=0,sip_aciklama='',sip_aciklama2='',sip_depono=@sip_depono,sip_OnaylayanKulNo=0,sip_vergisiz_fl=0,sip_kapat_fl=0,sip_promosyon_fl=0,sip_cari_sormerk=@sip_cari_sormerk,sip_stok_sormerk=@sip_stok_sormerk,sip_cari_grupno=0,sip_doviz_cinsi=0,sip_doviz_kuru=1,sip_alt_doviz_kuru=1,sip_adresno=1,sip_teslimturu='',sip_cagrilabilir_fl=1,sip_prosiprecDbId=0,sip_prosiprecrecI=0,sip_iskonto1=1,sip_iskonto2=1,sip_iskonto3=1,sip_iskonto4=1,sip_iskonto5=1,sip_iskonto6=1,sip_masraf1=1,sip_masraf2=1,sip_masraf3=1,sip_masraf4=1,sip_isk1=1,sip_isk2=1,sip_isk3=1,sip_isk4=1,sip_isk5=1,sip_isk6=0,sip_mas1=0,sip_mas2=0,sip_mas3=0,sip_mas4=0,sip_Exp_Imp_Kodu='',sip_kar_orani=0,sip_durumu=0,sip_stalRecId_DBCno=0,sip_stalRecId_RECno=0,sip_planlananmiktar=0,sip_teklifRecId_DBCno=0,sip_teklifRecId_RECno=0,sip_parti_kodu='',sip_lot_no=0,sip_projekodu='',sip_fiyat_liste_no=0,sip_Otv_Pntr=0,sip_Otv_Vergi=0,sip_otvtutari=0,sip_OtvVergisiz_Fl=0,sip_paket_kod='',sip_RezRecId_DBCno=0,sip_RezRecId_RECno=0,sip_harekettipi=0,sip_yetkili_recid_dbcno=0,sip_yetkili_recid_recno=0,sip_kapatmanedenkod='',sip_opno=@vade where sip_tip='1' and sip_cins='0' and sip_evrakno_seri='SIP' and sip_evrakno_sira='1' and sip_satirno='0'  else ");
            sb.Append("insert into SIPARISLER (sip_RECid_DBCno,sip_RECid_RECno,sip_SpecRECno,sip_iptal,sip_fileid,sip_hidden,sip_kilitli,sip_degisti,sip_checksum,sip_create_user,sip_create_date,sip_lastup_user,sip_lastup_date,sip_special1,sip_special2,sip_special3,sip_firmano,sip_subeno,sip_tarih,sip_teslim_tarih,sip_tip,sip_cins,sip_evrakno_seri,sip_evrakno_sira,sip_satirno,sip_belgeno,sip_belge_tarih,sip_satici_kod,sip_musteri_kod,sip_stok_kod,sip_b_fiyat,sip_miktar,sip_birim_pntr,sip_teslim_miktar,sip_tutar,sip_iskonto_1,sip_iskonto_2,sip_iskonto_3,sip_iskonto_4,sip_iskonto_5,sip_iskonto_6,sip_masraf_1,sip_masraf_2,sip_masraf_3,sip_masraf_4,sip_vergi_pntr,sip_vergi,sip_masvergi_pntr,sip_masvergi,sip_opno,sip_aciklama,sip_aciklama2,sip_depono,sip_OnaylayanKulNo,sip_vergisiz_fl,sip_kapat_fl,sip_promosyon_fl,sip_cari_sormerk,sip_stok_sormerk,sip_cari_grupno,sip_doviz_cinsi,sip_doviz_kuru,sip_alt_doviz_kuru,sip_adresno,sip_teslimturu,sip_cagrilabilir_fl,sip_prosiprecDbId,sip_prosiprecrecI,sip_iskonto1,sip_iskonto2,sip_iskonto3,sip_iskonto4,sip_iskonto5,sip_iskonto6,sip_masraf1,sip_masraf2,sip_masraf3,sip_masraf4,sip_isk1,sip_isk2,sip_isk3,sip_isk4,sip_isk5,sip_isk6,sip_mas1,sip_mas2,sip_mas3,sip_mas4,sip_Exp_Imp_Kodu,sip_kar_orani,sip_durumu,sip_stalRecId_DBCno,sip_stalRecId_RECno,sip_planlananmiktar,sip_teklifRecId_DBCno,sip_teklifRecId_RECno,sip_parti_kodu,sip_lot_no,sip_projekodu,sip_fiyat_liste_no,sip_Otv_Pntr,sip_Otv_Vergi,sip_otvtutari,sip_OtvVergisiz_Fl,sip_paket_kod,sip_RezRecId_DBCno,sip_RezRecId_RECno,sip_harekettipi,sip_yetkili_recid_dbcno,sip_yetkili_recid_recno,sip_kapatmanedenkod,sip_opno) values (0,-1,0,0,21,0,0,0,0,@sip_create_user,@sip_create_date,@sip_lastup_user,@sip_lastup_date,'','','',0,0,@sip_tarih,@sip_teslim_tarih,@sip_tip,@sip_cins,@sip_evrakno_seri,@sip_evrakno_sira,@sip_satirno,@sip_belgeno,@sip_belge_tarih,@sip_satici_kod,@sip_musteri_kod,@sip_stok_kod,@sip_b_fiyat,@sip_miktar,@sip_birim_pntr,0,@sip_tutar,@sip_iskonto_1,@sip_iskonto_2,@sip_iskonto_3,@sip_iskonto_4,@sip_iskonto_5,0,0,0,0,0,@sip_vergi_pntr,@sip_vergi,0,0,0,'','',@sip_depono,0,0,0,0,@sip_cari_sormerk,@sip_stok_sormerk,0,0,1,1,1,'',1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,'',0,0,0,0,0,0,0,'',0,'',0,0,0,0,0,'',0,0,0,0,0,'',@vade) ");
            sb.Append(";update SIPARISLER set sip_RECid_RECno=sip_RECno where sip_RECid_RECno=-1");

            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                q.Add("@sip_tip", SqlDbType.TinyInt, cins[0]);
                q.Add("@sip_cins", SqlDbType.TinyInt, cins[1]);
                q.Add("@sip_evrakno_seri", SqlDbType.VarChar, row.Seri, 6);
                q.Add("@sip_evrakno_sira", SqlDbType.Int, row.Sira);
                q.Add("@sip_create_user", SqlDbType.VarChar, Program.Session[Settings.MikroKullanici].ToString());
                q.Add("@sip_create_date", SqlDbType.DateTime, DateTime.Now);
                q.Add("@sip_lastup_user", SqlDbType.VarChar, Program.Session[Settings.MikroKullanici].ToString());
                q.Add("@sip_lastup_date", SqlDbType.DateTime, DateTime.Now);
                q.Add("@sip_tarih", SqlDbType.DateTime, row.Tarih);
                q.Add("@sip_teslim_tarih", SqlDbType.DateTime, row.Tarih);
                q.Add("@sip_belgeno", SqlDbType.VarChar, row.BelgeNo);
                q.Add("@sip_belge_tarih", SqlDbType.DateTime, row.Tarih);
                q.Add("@sip_satici_kod", SqlDbType.VarChar, Program.Session[Settings.PlasiyerKodu].ToString(), 25);
                q.Add("@sip_musteri_kod", SqlDbType.VarChar, row.CariKodu, 25);
                q.Add("@sip_depono", SqlDbType.VarChar, row.GirisDepoNo);
                q.Add("@sip_cari_sormerk", SqlDbType.VarChar, row.SrmMerkezKodu, 25);
                q.Add("@sip_stok_sormerk", SqlDbType.VarChar, row.SrmMerkezKodu, 25);
                q.Add("@vade", SqlDbType.Int, 0);
                q.Add("@sip_stok_kod", SqlDbType.VarChar, row.StokKodu, 25);
                q.Add("@sip_b_fiyat", SqlDbType.Float, row.Fiyat);
                q.Add("@sip_miktar", SqlDbType.Float, row.Miktar);
                q.Add("@sip_birim_pntr", SqlDbType.TinyInt, 1);
                q.Add("@sip_tutar", SqlDbType.Float, row.BurutTutar);
                q.Add("@sip_iskonto_1", SqlDbType.Float, row.Isk1Tutar);
                q.Add("@sip_iskonto_2", SqlDbType.Float, row.Isk2Tutar);
                q.Add("@sip_iskonto_3", SqlDbType.Float, row.Isk3Tutar);
                q.Add("@sip_iskonto_4", SqlDbType.Float, row.Isk4Tutar);
                q.Add("@sip_iskonto_5", SqlDbType.Float, row.Isk5Tutar);
                q.Add("@sip_vergi_pntr", SqlDbType.TinyInt, row.KdvSira);
                q.Add("@sip_vergi", SqlDbType.Float, row.KdvTutari);
                q.Add("@sip_satirno", SqlDbType.Int, row.Satir);
                q.Exec();
                q.Clear();

                q.Add("SELECT     sip_RECno FROM         SIPARISLER WHERE     (sip_tip = @sip_tip) AND (sip_cins = @sip_cins) AND (sip_evrakno_seri = @sip_evrakno_seri) AND (sip_evrakno_sira = @sip_evrakno_sira)");
                q.Add("@sip_tip", SqlDbType.TinyInt, cins[0]);
                q.Add("@sip_cins", SqlDbType.TinyInt, cins[1]);
                q.Add("@sip_evrakno_seri", SqlDbType.VarChar, row.Seri, 6);
                q.Add("@sip_evrakno_sira", SqlDbType.Int, row.Sira);
                var sonuc = q.ToList(new { id = -1 }).FirstOrDefault();
                row.Id = sonuc.id;
            }
        }
        private void SharEkle(ref HareketBilgileri row, EvrakTipleri evrakCinsi)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" if exists(SELECT     sth_evrakno_seri  FROM         STOK_HAREKETLERI  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" 		UPDATE STOK_HAREKETLERI SET ");
            sb.Append(" 							  sth_lastup_user=@kullanici, sth_lastup_date=@crDate, sth_tarih=@Evrak_Tarih, sth_tip=@Tip, sth_cins=@Cins, sth_normal_iade=@Normal_iade, sth_belge_tarih=@Evrak_Tarih,  ");
            sb.Append(" 							  sth_stok_kod=@Stok_kod, sth_cari_kodu=@Cari_kod, sth_plasiyer_kodu=@plasiyer, sth_kur_tarihi='1899-12-30 00:00:00', sth_miktar=@Miktar, sth_miktar2=@Miktar, sth_birim_pntr=1, sth_tutar=@yekun, sth_iskonto1=@isk1_tutar, sth_iskonto2=@isk2_tutar, sth_iskonto3=@isk3_tutar,  ");
            sb.Append(" 							  sth_iskonto4=@isk4_tutar, sth_iskonto5=@isk5_tutar, sth_vergi_pntr=@Kdv,sth_vergi=@kdv_tutar, sth_odeme_op=@odeme, sth_sip_recid_dbcno=@norm_sip_dbc, sth_sip_recid_recno=@norm_sip_rec, sth_giris_depo_no=@GirisDepo, sth_cikis_depo_no=@CikisDepo,  ");
            sb.Append(" 							  sth_malkbl_sevk_tarihi=@Evrak_Tarih, sth_cari_srm_merkezi=@srmerkez, sth_stok_srm_merkezi=@srmerkez, sth_fis_tarihi='1899-12-30 00:00:00', sth_maliyet_ana=@Fiyat, sth_maliyet_alternatif=@Fiyat, sth_maliyet_orjinal=@Fiyat, sth_vardiya_tarihi='1899-12-30 00:00:00',sth_subesip_recid_dbcno=@sube_sip_dbc,sth_subesip_recid_recno=@sube_sip_rec,sth_belge_no=@belge_no, ");
            sb.Append(" 							  sth_firmano=@firma_no,sth_subeno=@sube_no ");
            sb.Append(" 		WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" else ");
            sb.Append(" 		INSERT INTO STOK_HAREKETLERI ");
            sb.Append(" 		 (sth_RECid_DBCno,sth_RECid_RECno,sth_SpecRECno,sth_iptal,sth_fileid,sth_hidden,sth_kilitli,sth_degisti,sth_checksum,sth_create_user,sth_create_date,sth_lastup_user,sth_lastup_date,sth_special1,sth_special2,sth_special3,sth_firmano,sth_subeno,sth_tarih,sth_tip,sth_cins,sth_normal_iade,sth_evraktip,sth_evrakno_seri,sth_evrakno_sira,sth_satirno,sth_belge_no,sth_belge_tarih,sth_stok_kod,sth_isk_mas1,sth_isk_mas2,sth_isk_mas3,sth_isk_mas4,sth_isk_mas5,sth_isk_mas6,sth_isk_mas7,sth_isk_mas8,sth_isk_mas9,sth_isk_mas10,sth_sat_iskmas1,sth_sat_iskmas2,sth_sat_iskmas3,sth_sat_iskmas4,sth_sat_iskmas5,sth_sat_iskmas6,sth_sat_iskmas7,sth_sat_iskmas8,sth_sat_iskmas9,sth_sat_iskmas10,sth_pos_satis,sth_cari_cinsi,sth_cari_kodu,sth_cari_grup_no,sth_isemri_gider_kodu,sth_ismerkezi_kodu,sth_plasiyer_kodu,sth_kur_tarihi,sth_har_doviz_cinsi,sth_har_doviz_kuru,sth_alt_doviz_kuru,sth_stok_doviz_cinsi,sth_stok_doviz_kuru,sth_miktar,sth_miktar2,sth_birim_pntr,sth_tutar,sth_iskonto1,sth_iskonto2,sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6,sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4,sth_vergi_pntr,sth_vergi,sth_masraf_vergi_pntr,sth_masraf_vergi,sth_netagirlik,sth_odeme_op,sth_aciklama,sth_sip_recid_dbcno,sth_sip_recid_recno,sth_fat_recid_dbcno,sth_fat_recid_recno,sth_giris_depo_no,sth_cikis_depo_no,sth_malkbl_sevk_tarihi,sth_cari_srm_merkezi,sth_stok_srm_merkezi,sth_fis_tarihi,sth_fis_sirano,sth_vergisiz_fl,sth_maliyet_ana,sth_maliyet_alternatif,sth_maliyet_orjinal,sth_adres_no,sth_parti_kodu,sth_lot_no,sth_kons_recid_dbcno,sth_kons_recid_recno,sth_vardiya_tarihi,sth_vardiya_no,sth_satistipi,sth_proje_kodu,sth_ihracat_kredi_kodu,sth_exim_kodu,sth_otv_pntr,sth_otv_vergi,sth_bkm_recid_dbcno,sth_bkm_recid_recno,sth_karsikons_recid_dbcno,sth_karsikons_recid_recno,sth_iade_evrak_seri,sth_iade_evrak_sira,sth_diib_belge_no,sth_diib_satir_no,sth_mensey_ulke_tipi,sth_mensey_ulke_kodu,sth_brutagirlik,sth_halrehmiktari,sth_halrehfiyati,sth_halsandikmiktari,sth_halsandikfiyati,sth_halsandikkdvtutari,sth_disticaret_turu,sth_otvtutari,sth_otvvergisiz_fl,sth_direkt_iscilik_1,sth_direkt_iscilik_2,sth_direkt_iscilik_3,sth_direkt_iscilik_4,sth_direkt_iscilik_5,sth_genel_uretim_1,sth_genel_uretim_2,sth_genel_uretim_3,sth_genel_uretim_4,sth_genel_uretim_5,sth_yat_tes_kodu,sth_oiv_pntr,sth_oiv_vergi,sth_oivvergisiz_fl,sth_subesip_recid_dbcno,sth_subesip_recid_recno) ");
            sb.Append(" 		VALUES (0,-1,0,0,16,0,0,0,0,@kullanici,@crDate,@kullanici,@crDate,'','','',@firma_no,@sube_no,@Evrak_Tarih,@Tip,@Cins,@Normal_iade,@Evrak_Tip,@Seri,@Sira,@Satir,@belge_no,@Evrak_Tarih,@Stok_kod,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@Cari_kod,0,'','',@plasiyer,'1899-12-30 00:00:00',0,1,1,0,1, @Miktar  , @Miktar  ,1, @yekun   ,@isk1_tutar,@isk2_tutar,@isk3_tutar,@isk4_tutar,@isk5_tutar,0,0,0,0,0,@Kdv,@kdv_tutar,0,0,0,@odeme,'',@norm_sip_dbc,@norm_sip_rec,0,0,@GirisDepo,@CikisDepo,@Evrak_Tarih,@srmerkez,@srmerkez, '1899-12-30 00:00:00',0,0, @Fiyat  , @Fiyat  , @Fiyat  ,1,'',0,0,0,'1899-12-30 00:00:00',0,0,'','','',0,0,0,0,0,0,'',0,'',0,0,'',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,0,0,@sube_sip_dbc,@sube_sip_rec) ");
            sb.Append(";update STOK_HAREKETLERI set sth_RECid_RECno=sth_RECno where sth_RECid_RECno=-1");

            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                q.Add(sb.ToString());
                byte[] tipCins = EvrakCins(evrakCinsi);
                q.Add("@Tip", SqlDbType.Int, tipCins[0]);
                q.Add("@Cins", SqlDbType.Int, tipCins[1]);
                q.Add("@Normal_iade", SqlDbType.Int, tipCins[2]);
                q.Add("@Evrak_Tip", SqlDbType.Int, tipCins[3]);
                q.Add("@Evrak_Tarih", SqlDbType.DateTime, new DateTime(row.Tarih.Year, row.Tarih.Month, row.Tarih.Day));
                q.Add("@Seri", SqlDbType.VarChar, row.Seri);
                q.Add("@Sira", SqlDbType.Int, row.Sira);
                q.Add("@Satir", SqlDbType.Int, row.Satir);
                q.Add("@Stok_kod", SqlDbType.VarChar, row.StokKodu);
                q.Add("@Cari_kod", SqlDbType.VarChar, row.CariKodu);
                q.Add("@Miktar", SqlDbType.Decimal, row.Miktar);
                q.Add("@GirisDepo", SqlDbType.Int, row.GirisDepoNo);
                q.Add("@CikisDepo", SqlDbType.Int, row.CikisDepoNo);
                q.Add("@odeme", SqlDbType.Int, 0); //odeme * (-1));
                q.Add("@plasiyer", SqlDbType.VarChar, Program.Session[Settings.PlasiyerKodu].ToString(), 25);
                q.Add("@srmerkez", SqlDbType.VarChar, row.SrmMerkezKodu);
                q.Add("@kullanici", SqlDbType.VarChar, Program.Session[Settings.MikroKullanici].ToString());
                q.Add("@yekun", SqlDbType.Decimal, row.BurutTutar);
                q.Add("@isk1_tutar", SqlDbType.Decimal, row.Isk1Tutar);
                q.Add("@isk2_tutar", SqlDbType.Decimal, row.Isk2Tutar);
                q.Add("@isk3_tutar", SqlDbType.Decimal, row.Isk3Tutar);
                q.Add("@isk4_tutar", SqlDbType.Decimal, row.Isk4Tutar);
                q.Add("@isk5_tutar", SqlDbType.Decimal, row.Isk5Tutar);
                q.Add("@Kdv", SqlDbType.Int, row.KdvSira);
                q.Add("@crDate", SqlDbType.DateTime, DateTime.Now);

                if (evrakCinsi == EvrakTipleri.GelenDepoSevk || evrakCinsi == EvrakTipleri.GidenDepoSevk)
                {
                    q.Add("@sube_sip_rec", SqlDbType.Int, row.SipRecNo);
                    q.Add("@sube_sip_dbc", SqlDbType.Int, row.SipDbcNo);
                    q.Add("@norm_sip_rec", SqlDbType.Int, 0);
                    q.Add("@norm_sip_dbc", SqlDbType.Int, 0);
                }
                else
                {
                    q.Add("@sube_sip_rec", SqlDbType.Int, 0);
                    q.Add("@sube_sip_dbc", SqlDbType.Int, 0);
                    q.Add("@norm_sip_rec", SqlDbType.Int, row.SipRecNo);
                    q.Add("@norm_sip_dbc", SqlDbType.Int, row.SipDbcNo);
                }

                q.Add("@Fiyat", SqlDbType.Decimal, row.Fiyat);
                q.Add("@belge_no", SqlDbType.VarChar, row.BelgeNo, 25);
                q.Add("@firma_no", SqlDbType.Int, Cevir.Parse<int>(Program.Session[Settings.FirmaNo]));
                q.Add("@sube_no", SqlDbType.Int, Cevir.Parse<int>(Program.Session[Settings.SubeNo]));
                q.Add("@kdv_tutar", SqlDbType.Float, row.KdvTutari);
                q.Exec();
                q.Clear();

                q.Add("SELECT     sth_RECno  FROM         STOK_HAREKETLERI  WHERE     (sth_tip = @tip) AND (sth_cins = @cins) AND (sth_normal_iade = @normIade) AND (sth_evraktip = @evrTip) AND (sth_evrakno_seri = @seri) AND (sth_evrakno_sira = @sira) AND (sth_satirno = @satir)");
                q.Add("@tip", SqlDbType.TinyInt, tipCins[0]);
                q.Add("@cins", SqlDbType.TinyInt, tipCins[1]);
                q.Add("@normIade", SqlDbType.TinyInt, tipCins[2]);
                q.Add("@evrTip", SqlDbType.TinyInt, tipCins[3]);
                q.Add("@seri", SqlDbType.VarChar, row.Seri, 6);
                q.Add("@sira", SqlDbType.Int, row.Sira);
                q.Add("@satir", SqlDbType.Int, row.Satir);
                var sonuc = q.ToList(new { id = 0 }).FirstOrDefault();
                row.Id = sonuc.id;
            }
        }
        public virtual void MikroEkle(ref HareketBilgileri row, EvrakTipleri evrakCinsi)
        {
            if (evrakCinsi == EvrakTipleri.AlinanSiparis || evrakCinsi == EvrakTipleri.VerilenSiparis)
            {
                SiparisEkle(ref row, evrakCinsi);
            }
            else if (evrakCinsi == EvrakTipleri.SubeSiparis)
            {
            }
            else
                SharEkle(ref row, evrakCinsi);
        }
        public virtual void SharSil(int sharId)
        {
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                q.Add("DELETE FROM STOK_HAREKETLERI  WHERE     (sth_RECno = @shar_id)");
                q.Add("@shar_id", SqlDbType.Int, sharId);
                q.Exec();
            }
        }
        public virtual void EvrakSil(EvrakTipleri tip, String seri, int sira, byte harTip, byte harCins, byte normalIade, byte evrTip)
        {
            byte[] dizi = new byte[4];
            dizi[0] = harTip;
            dizi[1] = harCins;
            dizi[2] = normalIade;
            dizi[3] = evrTip;

            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM CARI_HESAP_HAREKETLERI WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM STOK_HAREKETLERI  WHERE     (sth_tip = {2}) AND (sth_cins = {3}) AND (sth_normal_iade = {4}) AND (sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]));
                        break;
                }
                q.Exec();
            }
        }
        #endregion
    }
}
